package com.cyan.note.service.manager;

import com.cyan.note.common.ApiResult;
import com.cyan.note.common.PageResult;
import com.cyan.note.dto.manager.worker.WorkerListDTO;
import com.cyan.note.dto.manager.worker.AvailableWorkerDTO;
import com.cyan.note.dto.manager.worker.WorkerStatsDTO;
import com.cyan.note.entity.Worker;

import java.util.List;

/**
 * 店长端-打手管理服务接口
 * 
 * @author ZhangzhenYu
 * @since 2025-01-15
 */
public interface ManagerWorkerService {

    /**
     * 分页查询打手列表
     */
    ApiResult<PageResult<WorkerListDTO>> getWorkerList(Long shopId, Integer page, Integer size, 
            String keyword, String status, String accountStatus, String level, String skillTags,
            String joinDateStart, String joinDateEnd, String ratingRange, String sortBy, String sortOrder);

    /**
     * 查询打手详情
     */
    ApiResult<Worker> getWorkerDetail(Long shopId, Long workerId);

    /**
     * 新增打手
     */
    ApiResult<Void> createWorker(Worker worker, Long operatorId);

    /**
     * 更新打手信息
     */
    ApiResult<Void> updateWorker(Worker worker, Long operatorId);

    /**
     * 删除打手
     */
    ApiResult<Void> deleteWorker(Long shopId, Long workerId, Long operatorId);

    /**
     * 查询可用打手列表（用于订单分配）
     */
    ApiResult<List<AvailableWorkerDTO>> getAvailableWorkers(Long shopId);

    /**
     * 更新打手状态
     */
    ApiResult<Void> updateWorkerStatus(Long shopId, Long workerId, String status, Long operatorId);

    /**
     * 更新打手账户状态
     */
    ApiResult<Void> updateWorkerAccountStatus(Long shopId, Long workerId, String accountStatus, Long operatorId);

    /**
     * 获取打手统计数据
     */
    ApiResult<WorkerStatsDTO> getWorkerStats(Long shopId);
}